// Decompiled by DJ v3.11.11.95 Copyright 2009 Atanas Neshkov  Date: 22/03/2011 12:27:49 p.m.
// Home Page: http://members.fortunecity.com/neshkov/dj.html  http://www.neshkov.com/dj.html - Check often for new version!
// Decompiler options: packimports(3) 
// Source File Name:   ComprasDeImportacionController.java

package com.luxsoft.sw3.impap.ui.consultas;

import com.luxsoft.siipap.compras.dao.Compra2Dao;
import com.luxsoft.siipap.compras.model.Compra2;
import com.luxsoft.siipap.compras.model.CompraUnitaria;
import com.luxsoft.siipap.compras.ui.consultas.SelectorPartidasDeCompraPorDepurar;
import com.luxsoft.siipap.compras.ui.form.CompraCentralizadaForm;
import com.luxsoft.siipap.compras.ui.form.CompraCentralizadaFormModel;
import com.luxsoft.siipap.cxp.ui.selectores.SelectorDeProveedores;
import com.luxsoft.siipap.dao.UniversalDao;
import com.luxsoft.siipap.model.Periodo;
import com.luxsoft.siipap.model.Sucursal;
import com.luxsoft.siipap.service.ServiceLocator2;
import com.luxsoft.siipap.swing.reports.ReportUtils;
import com.luxsoft.siipap.swing.utils.MessageUtils;
import com.luxsoft.siipap.swing.utils.SWExtUIManager;
import com.luxsoft.sw3.impap.services.ImportadorDeCompras;
import com.luxsoft.sw3.services.ComprasManager;
import java.util.*;
import javax.swing.SwingUtilities;
import org.springframework.context.ApplicationContext;

public class ComprasDeImportacionController
{

    public ComprasDeImportacionController()
    {
    }

    public Compra2 generarCompraDeImportacion()
    {
        CompraCentralizadaFormModel controller = new CompraCentralizadaFormModel();
        controller.setValue("sucursal", ServiceLocator2.getUniversalDao().get(Sucursal.class, Long.valueOf(1L)));
        controller.setValue("importacion", Boolean.TRUE);
        CompraCentralizadaForm form = new CompraCentralizadaForm(controller);
        form.setTitle("Compra de Importaci\363n");
        form.setImportacion(true);
        form.open();
        if(!form.hasBeenCanceled())
        {
            Compra2 target = controller.getCompra();
            return (Compra2)getManager().save(target);
        } else
        {
            return null;
        }
    }

    public Compra2 generarCompra()
    {
        CompraCentralizadaFormModel controller = new CompraCentralizadaFormModel();
        CompraCentralizadaForm form = new CompraCentralizadaForm(controller);
        form.open();
        if(!form.hasBeenCanceled())
        {
            Compra2 target = controller.getCompra();
            return (Compra2)getManager().save(target);
        } else
        {
            return null;
        }
    }

    public Compra2 editar(Compra2 source)
    {
        Compra2 target = getManager().buscarInicializada(source.getId());
        if(!target.isCancelable())
        {
            MessageUtils.showMessage((new StringBuilder("La compra: ")).append(target.getFolio()).append(" No se puede editar ya que tiene recepciones parciales").toString(), "Edici\363n de compras");
            return null;
        }
        CompraCentralizadaFormModel controller = new CompraCentralizadaFormModel(target);
        CompraCentralizadaForm form = new CompraCentralizadaForm(controller);
        form.open();
        if(!form.hasBeenCanceled())
        {
            target = controller.getCompra();
            return getManager().saveCentralizada(target);
        } else
        {
            return source;
        }
    }

    public void mostrarCompra(String id)
    {
        Compra2 compra = getManager().buscarInicializada(id);
        CompraCentralizadaFormModel controller = new CompraCentralizadaFormModel(compra);
        controller.setReadOnly(true);
        CompraCentralizadaForm form = new CompraCentralizadaForm(controller);
        form.open();
    }

    public List buscarPendientes()
    {
        return getCompraDao().buscarPendientes();
    }

    public List buscarCompras(Periodo periodo)
    {
        return getCompraDao().buscarCompras(periodo);
    }

    public List buscarPartidas(Compra2 compra)
    {
        return getCompraDao().buscarPartidas(compra);
    }

    private Compra2Dao getCompraDao()
    {
        return (Compra2Dao)ServiceLocator2.instance().getContext().getBean("compra2Dao");
    }

    public Compra2 cancelar(Object bean)
    {
        Compra2 compra = (Compra2)bean;
        if(bean != null)
        {
            Compra2 target = getCompraDao().inicializarCompra(compra.getId());
            if(!target.isCancelable())
            {
                MessageUtils.showMessage((new StringBuilder("La compra: ")).append(target.getFolio()).append(" No se puede cancelar ya que tiene recepciones parciales").toString(), "Cancelaci\363n de compras");
                return null;
            } else
            {
                target = getManager().cancelar(target, true);
                return target;
            }
        } else
        {
            return null;
        }
    }

    public Compra2 depurar(Object bean)
    {
        Compra2 compra = (Compra2)bean;
        if(MessageUtils.showConfirmationMessage((new StringBuilder("Depurar la orden de compra: ")).append(compra.getFolio()).toString(), "Depuraci\363in"))
        {
            Compra2 source = getCompraDao().inicializarCompra(compra.getId());
            java.util.Date fecha = ServiceLocator2.obtenerFechaDelSistema();
            if(MessageUtils.showConfirmationMessage("Parcial", "Depuraci\363n"))
            {
                List seleccionadas = SelectorPartidasDeCompraPorDepurar.seleccionar(source);
                if(!seleccionadas.isEmpty())
                {
                    for(Iterator iterator1 = seleccionadas.iterator(); iterator1.hasNext();)
                    {
                        CompraUnitaria uni = (CompraUnitaria)iterator1.next();
                        if(!uni.isDepurada())
                        {
                            uni.setDepuracion(fecha);
                            uni.setDepurado(uni.getSolicitado() - uni.getRecibido());
                        }
                    }

                }
            } else
            {
                source.setDepuracion(fecha);
                for(Iterator iterator = source.getPartidas().iterator(); iterator.hasNext();)
                {
                    CompraUnitaria uni = (CompraUnitaria)iterator.next();
                    if(!uni.isDepurada())
                    {
                        uni.setDepuracion(fecha);
                        uni.setDepurado(uni.getSolicitado() - uni.getRecibido());
                    }
                }

                if(source.getCierre() == null)
                    source.setCierre(fecha);
            }
            source.setReplicado(null);
            return (Compra2)getCompraDao().save(source);
        } else
        {
            return null;
        }
    }

    public ComprasManager getManager()
    {
        return ServiceLocator2.getComprasManager();
    }

    public static void imprimir(Compra2 compra)
    {
        compra = ServiceLocator2.getComprasManager().buscarInicializada(compra.getId());
        Map map = new HashMap();
        map.put("COMPRA_ID", compra.getId());
        map.put("CLAVEPROV", "NO");
        if(MessageUtils.showConfirmationMessage("Con claves del proveedor", "Impresi\363n de Orden de Compra"))
            map.put("CLAVEPROV", "SI");
        ReportUtils.viewReport(ReportUtils.toReportesPath("compras/OrdenDeCompraSuc.jasper"), map);
        if(compra.getConsolidada().booleanValue())
            ReportUtils.viewReport(ReportUtils.toReportesPath("compras/OrdenDeCompraConsolidada.jasper"), map);
    }

    public Compra2 importarCompra(Long folio)
    {
        Compra2 compra = (new ImportadorDeCompras()).importarCompra(folio);
        return compra;
    }

    public Compra2 cambiarProveedor(Compra2 compra)
    {
        if(!compra.isDepurada())
        {
            compra = getManager().buscarInicializada(compra.getId());
            for(Iterator iterator = compra.getPartidas().iterator(); iterator.hasNext();)
            {
                CompraUnitaria det = (CompraUnitaria)iterator.next();
                if(det.getRecibido() > 0.0D)
                {
                    MessageUtils.showMessage("Compra parcialmente recibida no se puede modificar el proveedor", "Cambio de proveedor");
                    return null;
                }
            }

            com.luxsoft.siipap.model.core.Proveedor prov = SelectorDeProveedores.seleccionarProveedor();
            if(prov != null)
            {
                compra.setProveedor(prov);
                compra = (Compra2)ServiceLocator2.getComprasManager().save(compra);
                return compra;
            } else
            {
                return null;
            }
        } else
        {
            return null;
        }
    }

    public static void main(String args[])
    {
        SwingUtilities.invokeLater(new Runnable() {

            public void run()
            {
                SWExtUIManager.setup();
                ComprasDeImportacionController controller = new ComprasDeImportacionController();
                controller.generarCompra();
                System.exit(0);
            }

        }
);
    }
}
